--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
README.md v3.3.1 (1f9632b3) Text, 8.19 KB
Reticulum MeshChatX
A Reticulum MeshChat fork from the future.
<video src="showcase/showcase-video-call.mp4" controls="controls" style="max-width: 100%;"></video>
This project is seperate from the original Reticulum MeshChat project, and is not affiliated with the original project.
│ [!WARNING] Backup your reticulum-meshchat folder before using, even though MeshChatX will attempt
│ to auto-migrate whatever it can from the old database without breaking things. Its best to keep
│ backups.
Major Features
• Full LXST support w/ custom voicemail, phonebook, contacts, contact sharing and ringtone support.
• Multi-identity support.
• Authentication
• Map (OpenLayers w/ MBTiles upload and exporter for offline maps)
• Security improvements (automatic HTTPS, CORS, and much more)
• Modern Custom UI/UX
• More Tools (RNStatus, RNProbe, RNCP and Translator)
• Built-in page archiving and automatic crawler.
• Block LXMF users, Telephony and NomadNet Nodes
• Toast system for notifications
• i18n support (En, De, Ru)
• Raw SQLite database backend (replaced Peewee ORM)
• LXMF Telemetry support (WIP)
Screenshots
<details>
<summary>Telephony & Calling</summary>
Phone
Active Call
Call Ended
Voicemail
Ringtone Settings
Network Visualiser
Archives Browser
Viewing Archived Page
Tools
Identity Management
TODO
• [ ] Tests and proper CI/CD pipeline.
• [ ] RNS hot reload fix
• [ ] Offline Reticulum documentation tool
• [ ] Spam filter (based on keywords)
• [ ] TAK tool/integration
• [ ] RNS Tunnel - tunnel your regular services over RNS to another MeshchatX user.
• [ ] RNS Filesync - P2P file sync
• [ ] RNS Page Node
Usage
Building
This project uses Task for build automation. Install Task first, then:
T282828
task install T8b949e# installs Python deps via Poetry and Node deps via pnpm
task build
You can run T383838task run or T383838task develop (a thin alias) to start the backend + frontend loop locally through T383838poetry run meshchat.
Available Tasks
┌────────────────────────────┬─────────────────────────────────────────────────────────────────────┐
│ Task │ Description │
├────────────────────────────┼─────────────────────────────────────────────────────────────────────┤
│ T383838task install │ Install all dependencies (syncs version, installs node modules and… │
│ T383838task node_modules │ Install Node.js dependencies only │
│ T383838task python │ Install Python dependencies using Poetry only │
│ T383838task sync-version │ Sync version numbers across project files │
│ T383838task run │ Run the application │
│ T383838task develop │ Run the application in development mode (alias for T383838run) │
│ T383838task build │ Build the application (frontend and backend) │
│ T383838task build-frontend │ Build only the frontend │
│ T383838task clean │ Clean build artifacts and dependencies │
│ T383838task wheel │ Build Python wheel package (outputs to T383838python-dist/) │
│ T383838task build-appimage │ Build Linux AppImage │
│ T383838task build-exe │ Build Windows portable executable │
│ T383838task dist │ Build distribution (defaults to AppImage) │
│ T383838task electron-legacy │ Install legacy Electron version │
│ T383838task build-appimage-legacy │ Build Linux AppImage with legacy Electron version │
│ T383838task build-exe-legacy │ Build Windows portable executable with legacy Electron version │
│ T383838task build-docker │ Build Docker image using buildx │
│ T383838task run-docker │ Run Docker container using docker-compose │
└────────────────────────────┴─────────────────────────────────────────────────────────────────────┘
All tasks support environment variable overrides. For example:
• T383838PYTHON=python3.12 task install
• T383838DOCKER_PLATFORMS=linux/amd64,linux/arm64 task build-docker
Python Packaging
The backend uses Poetry with T383838pyproject.toml for dependency management and packaging. T383838package.json is the source of truth for the project version. When you run T383838task install (or any task that builds/runs the app), the version is automatically synced to T383838pyproject.toml and T383838src/version.py. This keeps the CLI release metadata, wheel packages, and other bundles aligned with the Electron build.
Build Artifact Locations
Both T383838poetry build and T383838python -m build generate wheels inside the default T383838dist/ directory. The T383838task wheel shortcut wraps T383838poetry build -f wheel and then runs T383838python scripts/move_wheels.py to relocate the generated T383838.whl files into T383838python-dist/ (the layout expected by T383838scripts/test_wheel.sh and the release automation). Use T383838task wheel if you need the artifacts in T383838python-dist/; T383838poetry build or T383838python -m build alone will leave them in T383838dist/.
Building with Poetry
T282828
T8b949e# Install dependencies
poetry install
T8b949e# Build the package (wheels land in dist/)
poetry build
T8b949e# Install locally for testing (consumes dist/)
pip install dist/*.whl
Building with pip (alternative)
If you prefer pip, you can build/install directly:
T282828
T8b949e# Build the wheel
pip install build
python -m build
T8b949e# Install locally
pip install .
Building in Docker
T282828
task build-docker
T383838build-docker creates T383838reticulum-meshchatx:local (or T383838$DOCKER_IMAGE if you override it) via T383838docker buildx. Set T383838DOCKER_PLATFORMS to T383838linux/amd64,linux/arm64 when you need multi-arch images, and adjust T383838DOCKER_BUILD_FLAGS/T383838DOCKER_BUILD_ARGS to control T383838--load/T383838--push.
Running with Docker Compose
T282828
task run-docker
T383838run-docker feeds the locally-built image into T383838docker compose -f docker-compose.yml up --remove-orphans --pull never reticulum-meshchatx. The compose file uses the T383838MESHCHAT_IMAGE env var so you can override the target image without editing the YAML (the default still points at T383838ghcr.io/sudo-ivan/reticulum-meshchatx:latest). Use T383838docker compose down or T383838Ctrl+C to stop the container.
The Electron build artifacts will still live under T383838dist/ for releases.
Standalone Executables (cx_Freeze)
The T383838cx_setup.py script uses cx_Freeze for creating standalone executables (AppImage for Linux, NSIS for Windows). This is separate from the Poetry/pip packaging workflow.
Internationalization (i18n)
Multi-language support is in progress. We use T383838vue-i18n for the frontend.
Translation files are located in T383838meshchatx/src/frontend/locales/.
Currently supported languages:
• English (Primary)
• Russian
• German
Credits
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────